package main

import "fmt"

//定义一个接口
type USB interface {
	name() string //该功能可以获取名称，此功能有返回值
	plugIn() //该功能可以插入
}
//创建一个结构体，用来实现上面的USB接口
type Mouse struct{
	m_name string //鼠标名称
}

//创建一个实现类，用来实现鼠标结构体获取名称,并返回名称
func (m Mouse) name()string  {
	return m.m_name
}
//再创建一个实现类，来实现上面获取的USB去实现插入电脑操作
func (m Mouse) plugIn()  {
	fmt.Println("USB设备：",m.name(),"连入电脑开始工作。。。。")

}
//再创建一个闪迪U盘
type FlashDisk struct {
	f_name string
}
//获取闪迪U盘的名称
func (f FlashDisk) name() string {
	return f.f_name
}
//插入U盘到电脑上
func (f FlashDisk) plugIn()  {
	//输出的时候应该调用接口的方法，不能再写成f.f_name了。应该直接调用f.name()
	fmt.Printf("USB设备：%s,连入主机开始工作\n",f.name())
}

func main()  {
	m1:=Mouse{"逻辑红色"} //定义一个结构体对象罗技鼠标
	fmt.Println(m1.m_name)//输出该结构体的名称
	m1.plugIn() //USB设备： 逻辑红色 连入电脑开始工作。。。。
	//将鼠标插入电脑工作
	fmt.Println(m1.name())//逻辑红色

	//var f1 USB
	f1:=FlashDisk{"mac"}
	fmt.Println(f1.name()) //mac
	f1.plugIn() //USB设备：mac,连入主机开始工作

	f2:=FlashDisk{"INPHIC"}
	f2.plugIn() //USB设备：INPHIC,连入主机开始工作
}
